package com.dalin.framework.common.utils;

import java.io.IOException;
import java.security.MessageDigest;

/*****************************************************************************
 * @content: 加密解密工具                                                                                                                       *
 * @author : 那建林                                                                                                                                *
 * @crtDate: 2010-03-10                                                     *
 ****************************************************************************/
public final class EncryptUtils {
	private EncryptUtils() {}

	public static void main(String[] args) throws IOException {
		System.out.println(encodeToMD5Str("1").toLowerCase());
		System.out.println(encodeToMD40Str("111111"));
	}

	
	
	/*************************************************************************
	 * @content: MD5不可逆加密算法,返回32位
	 * @param  : text 待加密的字符串
	 * @return : 加密后的32位字符串
	 * @author : 那建林
	 * @crtDate: 2009-09-13
	 * @modDate: 2009-09-13
	 */
	public static String encodeToMD5Str(String text) {
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.reset();
			md.update(text.getBytes("UTF-8"));
			byte[] digest = md.digest();
			text = StringUtils.bytesToHexString(digest);
		} catch (Exception e) {
			//e.printStackTrace();
		}
		return text.toUpperCase();
	}
	
	
	/*************************************************************************
	 * @content: MD40不可逆加密算法,返回40位
	 * @param  : text 待加密的字符串
	 * @return : String 加密后的40位字符串
	 * @author : 那建林
	 * @crtDate: 2009-09-13
	 * @modDate: 2009-09-13
	 */
	public static String encodeToMD40Str(String text) {
		try {
			text = encodeToMD5Str(text);
			char[] tca = text.toCharArray();
			text = encodeToMD5Str(text) + tca[1] + tca[4] + tca[5] + tca[9]
			        + tca[14] + tca[23] + tca[13] + tca[5];
		} catch (Exception e) {
			//e.printStackTrace();
		}
		return text.toUpperCase();
	}
}
/*dalinjob20100604

 * // 将 BASE64 编码的字符串 s 进行解码 public static String getFromBASE64(String s) { if
 * (s == null) return null; BASE64Decoder decoder = new BASE64Decoder(); try {
 * byte[] b = decoder.decodeBuffer(s); return new String(b); } catch (Exception
 * e) { return null; } }
 * 
 * public static String getBASE64(String s) { if (s == null) return null; return
 * (new sun.misc.BASE64Encoder()).encode(s.getBytes()); }
 */